package com.mazsn;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

@Controller
public class HomeController {
	 //Save the uploaded file to this folder
	 private static String UPLOADED_FOLDER = "E://temp//";
	 
	 @Autowired
	 private DateFormatConfig dateFormatConfig;
	 
	 
	 @Value("#{dateFormatConfig.convert('${test.string.data}')}")
	 private Date testDate;
	 

	 
	@GetMapping("/")
	public String index() {
	    return "upload";
	}
	
	
	@PostMapping("/upload") 
	public String singleFileUpload(@RequestParam("file") MultipartFile file,
	                               RedirectAttributes redirectAttributes) {
	    if (file.isEmpty()) {
	        redirectAttributes.addFlashAttribute("message", "Please select a file to upload");
	        return "redirect:uploadStatus";
	    }
        System.out.println(testDate);
	    try {
	        // Get the file and save it somewhere
	        byte[] bytes = file.getBytes();
	        Path path = Paths.get(UPLOADED_FOLDER + file.getOriginalFilename());
	        File dir=new File(UPLOADED_FOLDER);
	        if(!dir.exists()) {
	    	   dir.mkdir();
	        }
	        Files.write(path, bytes);
	        redirectAttributes.addFlashAttribute("message",
	                "You successfully uploaded '" + file.getOriginalFilename() + "'");
	    } catch (IOException e) {
	        e.printStackTrace();
	    }

	    return "redirect:/uploadStatus";
	}
	
	@GetMapping("/uploadStatus")
    public String uploadStatus() {
        return "uploadStatus";
    }
	
	
}
